#!/usr/bin/python
#-*-coding: utf-8-*-
import sys, os
import socket, select
from collections import namedtuple

Address = namedtuple('Address', ['ip', 'port'])

def start_service(listening_port, dat_to_write="empfangener_text.txt", listening_ip=""):
    """Initiiert das Warten auf UDP Pakete"""

    listening_address = Address(listening_ip, listening_port)
    # listening_address ist ein namedtuple
    
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # socket-objekt instanziieren

#    destination_path = '/'.join([os.getcwd(), dat_to_write])
    destination_path = os.path.abspath(dat_to_write)
    print destination_path
    try:
        with open(destination_path, 'w') as file_to_write:
            s.bind(listening_address)
            # explizit auf diesem Port und dieser 'IP-Nummer' auf Daten warten
            
        #    file_to_write.flush()
         #   file_to_write.close()
    except IOError:
        print 'Datei %s problem' % dat_to_write
        print 'Hallo, bitte schick mir was.'
        
    #while True:
      #  data, addr = s.recvfrom(1024)
        # (daten, (absender_ip, absender_port) )
        # recvfrom(buflen[, flags]) --> ('127.0.0.1', 7654) receive data
        # and sender's address
        # Kilobyteweise Datenannehmen
     #   file_to_write.write(data)
    
        # s.close() ist der Grund warum das in nem try-catch block steht
        
if __name__ == '__main__':
    listening_ip = ''
    dat_to_write = 'empfangen.txt'
    listening_port = 1111

    start_service(listening_port, dat_to_write, listening_ip)
        
        # select gibt 3-Tuple mit Listen von sockets zurueck in denn lesbare-, schreibbare-, oder out-of-band Pakete bereit stehen
        # selbe socket-instanz darf in mehreren Listen vorkommen
        # Timeout: 0, nur bereits beim Aufruf bereite Sockets werden zurueck gegeben
        
